package cn.zhx.xa.system.utils;


import cn.zhx.xa.model.vo.menu.SysMenuSearchVo;

import java.util.ArrayList;
import java.util.List;
public class MenuHelper {

    /**
     * 使用递归方法建菜单
     *
     * @param sysMenuList
     * @return
     */
    public static List<SysMenuSearchVo> buildTree(List<SysMenuSearchVo> sysMenuList) {
        // 创建一个空的菜单树列表
        List<SysMenuSearchVo> trees = new ArrayList<>();
        // 遍历给定的菜单列表
        for (SysMenuSearchVo sysMenuSearchVo : sysMenuList) {
            // 如果当前菜单的父ID为0，表示它是根菜单
            if (sysMenuSearchVo.getParentId().longValue() == 0) {
                // 调用findChildren方法查找当前菜单的子菜单，并将子菜单添加到菜单树列表中
                trees.add(findChildren(sysMenuSearchVo,sysMenuList));
            }
        }
        // 返回构建好的菜单树列表
        return trees;
    }




    /**
     * 递归查找子节点
     *
     * @param treeNodes
     * @return
     */
    public static SysMenuSearchVo findChildren(SysMenuSearchVo sysMenu, List<SysMenuSearchVo> treeNodes) {
        // 初始化子节点列表
        sysMenu.setChildren(new ArrayList<SysMenuSearchVo>());
        // 遍历节点列表
        for (SysMenuSearchVo it : treeNodes) {
            // 如果当前节点的 ID 与 sysMenu 的 ID 相等，则添加子节点
            if(sysMenu.getId().longValue() == it.getParentId().longValue()) {
                // 判断子节点列表是否为空，如果为空则初始化一个新的列表
                //if (sysMenu.getChildren() == null) {
                //    sysMenu.setChildren(new ArrayList<>());
                //}
                sysMenu.getChildren().add(findChildren(it,treeNodes));
            }
        }
        return sysMenu;
    }

}